<?php 

class Gas
{
    public static $POWER = '汽油';
}

class Car 
{
    public static $WHEELS = 4;

    public static function getWheels()
    {
        return self::$WHEELS;
    }

    public static function printCar()
    {
        return sprintf("这辆车有 %d 个轮子，使用 %s 作为动力来源\n", self::$WHEELS, Gas::$POWER);
    }

    public function __toString()
    {
        return self::printCar() . '<br/>';
    }

    public static function getClassName()
    {
        return __CLASS__;
    }

    public static function who()
    {
        echo static::getClassName() . '<br/>';
    }
}

//静态方法继承和重写
class LynkCo01 extends Car
{
    public static function getClassName()
    {
        return __CLASS__;
    }

}

echo "WHEELS:" . Car::$WHEELS . '<br/>';
echo "getWheels:" . Car::getWheels() . '<br/>';
echo Car::printCar().'<br/>';

$car = new Car();
echo $car;

echo Car::getClassName() . '<br/>';
echo LynkCo01::getClassName() . '<br/>';

echo Car::who() . '<br/>';
//后期静态绑定
echo LynkCo01::who() . '<br/>'; // 输出Car，self 指向的是定义它的类而不是调用时的,使用 static 指向的是调用它的方法所在的类

